#pragma once

#include "Type.h"
#include "DecoratedType.h"

class CForwardLinkedListType : public CType
{
public:
    CForwardLinkedListType();

    static CForwardLinkedListType* GetStaticType();

    static CString CreateTypeName(const CString& ElementType);
    static STypeID CreateID(const SDecoratedType & ElementType);

protected:
    static CString PlaceholderName;

};


class CForwardLinkedListGeneralized : public CType
{
public:
    CForwardLinkedListGeneralized(const SDecoratedType& InElementType);

    SDecoratedType GetElementType() const;

    //find or add a  generalized linked list type
    //under global namespace
    static CForwardLinkedListGeneralized * FindOrAddType(const SDecoratedType& InElementType);

protected:


};